package com.example.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.admin.entity.SysRole;
import com.example.admin.entity.SysUser;
import com.example.admin.model.dto.RoleDTO;
import com.example.admin.model.dto.RoleRequest;

import java.util.List;

public interface RoleService {
    /**
     * 分页查询角色列表
     */
    IPage<SysRole> getRolePage(RoleRequest request);
    
    /**
     * 新增角色
     */
    void addRole(RoleDTO roleDTO);
    
    /**
     * 更新角色
     */
    void updateRole(RoleDTO roleDTO);
    
    /**
     * 删除角色
     */
    void deleteRole(Long id);
    
    /**
     * 获取角色详情
     */
    RoleDTO getRoleById(Long id);
    
    /**
     * 获取角色关联的用户列表
     */
    IPage<SysUser> getRoleUsers(Long roleId, RoleRequest request);
    
    /**
     * 更新角色菜单权限
     */
    void updateRoleMenus(Long roleId, List<Long> menuIds);
    
    /**
     * 获取可以添加到角色的用户列表
     */
    IPage<SysUser> getAvailableUsers(RoleRequest request);
    
    /**
     * 添加用户到角色
     */
    void addUsers(Long roleId, List<Long> userIds);
    
    /**
     * 从角色中移除用户
     */
    void removeUser(Long roleId, Long userId);
} 